package sv.com.action.motoAcuatica;

import java.util.ArrayList;
import java.util.Date;
import java.util.HashMap;
import java.util.List;

import net.sf.json.JSONObject;
import sv.com.action.comun.ComunAction;
import sv.com.modelo.buque.UnidadPotencia;
import sv.com.modelo.motoAcuatica.AuditMotoAcuatica;
import sv.com.modelo.motoAcuatica.AuditPersonaXMoto;
import sv.com.modelo.motoAcuatica.MotoAcuatica;
import sv.com.modelo.motoAcuatica.MotorMoto;
import sv.com.modelo.motoAcuatica.PersonaMotoPk;
import sv.com.modelo.motoAcuatica.PersonaxMoto;
import sv.com.modelo.persona.Persona;
import sv.com.objetos.auxiliares.Cadena;
import sv.com.objetos.auxiliares.Constantes;
import sv.com.objetos.auxiliares.Consulta;
import sv.com.objetos.auxiliares.Fecha;
import sv.com.objetos.auxiliares.Listas;
import sv.com.objetos.auxiliares.UsuarioLogueado;
import sv.com.objetos.jqgrid.JQGridJSONModel;
import sv.com.objetos.jqgrid.JQGridRow;

public class MotoAcuaticaAction extends ComunAction {
	
	
	private static final long serialVersionUID = 1L;



	public void mapaDeMetodos(){
		String metodo=getOper();
		if(metodo==null) metodo = CONS;
		if(metodo.equals("cargarMotoAcuatica")) cargarGridMotoAcuatica();
		else if(metodo.equals("datosMotoAcuatica")) cargarDatosMotoAcuatica();
		else if(metodo.equals(AGR)) agregar();
		else if(metodo.equals(MOD)) modificar();
		else if(metodo.equals("eliminarDuenos")) eliminoDuennos();
		else if(metodo.equals("pathMoto")) guardarPath();
	}
	

	public void guardarPath(){
		HashMap<String, Object> parametros = new HashMap<String, Object>();
		ArrayList<String> propiedades=new ArrayList<String>();
		ArrayList<Object> valores = new ArrayList<Object>();
		ArrayList<String> tiposConsulta = new ArrayList<String>();
		String idMoto  = getServletRequest().getParameter("idMoto");
		String foto  = getServletRequest().getParameter("nomArchivo");
		
		propiedades.add("idMotoAcuatica");
		valores.add(idMoto);
		tiposConsulta.add(Consulta.IGUAL);
		List<MotoAcuatica> lista=null;
		
		parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
		parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
		parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
		parametros.put("ordenarPor", "idMotoAcuatica asc");
		
		try {
			lista=servicioGenerico.cargarTodosV2(MotoAcuatica.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);						
			MotoAcuatica moto= lista.get(0);
			moto.setFotografia(foto);
				
			servicioGenerico.modificar(moto);						
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());			
		}	
	}
	
	public void eliminoDuennos(){
		List<PersonaxMoto> listaPerMoto=null;
		String idPer = getServletRequest().getParameter("idPersona");
		String idMotoAcuatica = getServletRequest().getParameter("idMoto");
		HashMap<String, Object> parametros2 = new HashMap<String, Object>();
		ArrayList<String> propiedades2=new ArrayList<String>();
		ArrayList<Object> valores2 = new ArrayList<Object>();
		ArrayList<String> tiposConsulta2 = new ArrayList<String>();
		
		propiedades2.add("personaMotoPk.idPersona");
		valores2.add(new Long(idPer));
		tiposConsulta2.add(Consulta.IGUAL);
		
		
		propiedades2.add("personaMotoPk.idMotoAcuatica");
		valores2.add(new Long(idMotoAcuatica));
		tiposConsulta2.add(Consulta.IGUAL);
		
		parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades2));
		parametros2.put("valores", Listas.pasarListaArregloObjeto(valores2));
		parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta2));
		parametros2.put("ordenarPor", "personaMotoPk.idPersona asc");
		
		try {
			listaPerMoto=servicioGenerico.cargarTodosV2(PersonaxMoto.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			PersonaxMoto pxm = listaPerMoto.get(0);
			servicioGenerico.eliminar(pxm);
		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
	
	}
	
	
	public void cargarGridMotoAcuatica(){
		try{
			JQGridJSONModel json= new JQGridJSONModel();
			int pagina = getPage();
			int bloque = getRows();
			
			String marcaChasis = getServletRequest().getParameter("marcaChasis");
			String numeroOficial = getServletRequest().getParameter("numeroOficial");
			List<JQGridRow> rows = new ArrayList<JQGridRow>();
			
			Integer totalColumnas = new Integer(0);
			List<MotoAcuatica> lista=null;
			String idmotoAcuatica = getServletRequest().getParameter("idMotoAcuatica");
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			if(get_search()){
//				HashMap<String, Object> filtros=obtenerFiltros();
//				propiedades.addAll((ArrayList)filtros.get("propiedades"));
//				valores.addAll((ArrayList)filtros.get("valores"));
//				tiposConsulta.addAll((ArrayList)filtros.get("tiposConsulta"));
				if(Cadena.noVacio(marcaChasis)){ propiedades.add("marcaChasis"); valores.add(marcaChasis); tiposConsulta.add(Consulta.LIKE); }
				if(Cadena.noVacio(numeroOficial)){ propiedades.add("numeroOficial"); valores.add(numeroOficial); tiposConsulta.add(Consulta.IGUAL); }
				
			}

			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idMotoAcuatica asc");
			
			totalColumnas = servicioGenerico.tamanoTotalListaCargarTodosV2(MotoAcuatica.class, parametros);
			lista=servicioGenerico.cargarTodosV2(MotoAcuatica.class, parametros, pagina, bloque);
			
			json.setRecords(totalColumnas);
			JQGridRow row = null; 
			List<String> cells = null; 
			for(MotoAcuatica objeto:lista){
				row = new JQGridRow(); 
				cells = new ArrayList<String>();
				row.setId(objeto.getIdMotoAcuatica());
				cells.add(objeto.getIdMotoAcuatica()+ "");
				cells.add(objeto.getMarcaChasis());
				cells.add(objeto.getNumeroOficial());
				
				row.setCell(cells); 
				rows.add(row);
			}
			json.setPage(String.valueOf(pagina)); 
			json.setTotal(String.valueOf(Constantes.calcularNumeroPaginas(totalColumnas,getRows())));
			json.setRows(rows);
			
			JSONObject o = JSONObject.fromObject(json);
			enviarJsonNavegador(o);
		}catch (Exception e) {
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
		return;
	}
	
	
	public void cargarDatosMotoAcuatica(){
		try{
			
			List<MotoAcuatica> lista=null;
			List<PersonaxMoto> listaPerMot=null;
			List<MotorMoto> listaMotorMoto= null;
			List<Persona> listaPer=null;
			
			String idMotoAcuatica = getServletRequest().getParameter("idMotoAcuatica");
			
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			propiedades.add("idMotoAcuatica");
			valores.add(idMotoAcuatica);
			tiposConsulta.add(Consulta.IGUAL);
			
			
			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idMotoAcuatica asc");
			
			lista=servicioGenerico.cargarTodosV2(MotoAcuatica.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
			MotoAcuatica ma= lista.get(0);
			
			
			///--------PARTE PARA RECONSTRUIR PERSONAS POR MOTO ACUATICA------------
			
			HashMap<String, Object> parametros2 = new HashMap<String, Object>();
			ArrayList<String> propiedades2=new ArrayList<String>();
			ArrayList<Object> valores2 = new ArrayList<Object>();
			ArrayList<String> tiposConsulta2 = new ArrayList<String>();
			
			
			
			propiedades2.add("personaMotoPk.idMotoAcuatica");
			valores2.add(new Long(idMotoAcuatica));
			tiposConsulta2.add(Consulta.IGUAL);
			
			parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades2));
			parametros2.put("valores", Listas.pasarListaArregloObjeto(valores2));
			parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta2));
			parametros2.put("ordenarPor", "personaMotoPk.idPersona asc");
			
			listaPerMot=servicioGenerico.cargarTodosV2(PersonaxMoto.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
			
		
			String html="";
			int conta =1;
			double total = 0;
			for(PersonaxMoto pxm:listaPerMot){
				HashMap<String, Object> parametros3 = new HashMap<String, Object>();
				ArrayList<String> propiedades3=new ArrayList<String>();
				ArrayList<Object> valores3 = new ArrayList<Object>();
				ArrayList<String> tiposConsulta3 = new ArrayList<String>();
				
				
				propiedades3.add("idPersona");
				valores3.add(new Long(pxm.getPersonaMotoPk().getIdPersona()));
				tiposConsulta3.add(Consulta.IGUAL);
				
				parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades3));
				parametros2.put("valores", Listas.pasarListaArregloObjeto(valores3));
				parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta3));
				parametros2.put("ordenarPor", "idPersona asc");
				
				listaPer =servicioGenerico.cargarTodosV2(Persona.class, parametros2, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
				
				Persona pp= listaPer.get(0);
				
				html = html + "<tr id='tr"+conta+"'> ";
				html  = html + "<td><input type='hidden' name='hdVal"+conta+"' id='hdVal"+conta+"' value='"+pxm.getPersonaMotoPk().getIdPersona()+"'> </td>";		 
				html  = html + "<td><input type='text' name='nombreVal"+conta+"' id='nombreVal"+conta+"' value='"+pp.getNombrePersona()+"'> </td>";
				html  = html + "<td><input type='text' class='number'  name='porcentajeVal"+conta+"' id='porcentajeVal"+conta+"' value='"+pxm.getPorcentaje()+"'> </td>";
				//html  = html + "<td><input class='agrego' type='button' onclick='javascript:validarPorCiento("+conta+")'></td>";
				html  = html + "<td><input class='delete' type='button' onclick='javascript:eliminarDuenno("+conta+","+pxm.getPersonaMotoPk().getIdPersona()+","+pxm.getPersonaMotoPk().getIdMotoAcuatica() +")'></td>";
				html  = html + "</tr>";
				
				total = total + pxm.getPorcentaje();
				conta++;
			}
			
			HashMap<String, Object> retorno = new HashMap<String, Object>();
													
			retorno.put("fechaResolucionDE",Fecha.fechaACadena(ma.getFechaResolucionDE()));
			retorno.put("fechaNotificacion",Fecha.fechaACadena(ma.getFechaNotificacion()));
			retorno.put("fechaEmision",Fecha.fechaACadena(ma.getFechaEmision()));
			retorno.put("fechaExpiracion",Fecha.fechaACadena(ma.getFechaExpiracion()));		
			
			retorno.put("total", total);
			retorno.put("duennos", html);
			retorno.put("motoAcuatica",ma);
			retorno.put("conta",conta);
						
			
			JSONObject o = JSONObject.fromObject(retorno);
			enviarJsonNavegador(o);
		}catch (Exception e) {
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
		return;
	}
	
	
	@SuppressWarnings("deprecation")
	public void agregar(){
		try {
		
		MotoAcuatica moto = new MotoAcuatica();
		AuditMotoAcuatica amoto = new AuditMotoAcuatica();
				
		
		//recuperando datos Generales
		String idMotoAcuatica = getServletRequest().getParameter("idMoto");
	  	String numeroOficial = getServletRequest().getParameter("numeroOficialMoto");
	  	String color = getServletRequest().getParameter("colorMoto");
		String marcaChasis = getServletRequest().getParameter("marcaChasisMoto");
		String modeloChasis = getServletRequest().getParameter("modeloChasisMoto");
		String numeroSerieChasis = getServletRequest().getParameter("numeroSerieChasisMoto");
		String ubicacionFisica = getServletRequest().getParameter("ubicacionFisicaMoto");
		
		
		String contador = getServletRequest().getParameter("contador");
		String idMoto = getServletRequest().getParameter("idMoto");
		
				
		Long cnt = new Long(0);
		if(contador!=null&&!contador.equals("")) cnt = new Long(contador);

		
	
		//seteando datos Generales
		moto.setNumeroOficial(numeroOficial);
		moto.setColor(color);
		moto.setMarcaChasis(marcaChasis);
		moto.setModeloChasis(modeloChasis);
		moto.setNoSerieChasis(numeroSerieChasis);
		moto.setUbicacionFisica(ubicacionFisica);
		
		 
		//para agregar la informacion del usuario en uso
		UsuarioLogueado ul = obtenerUsuarioLogueado(getServletRequest());
		moto.setUsuario(ul.getCodUsuario());
		
		
		servicioGenerico.agregar(moto);
	
		amoto.setIdMotoAcuatica(moto.getIdMotoAcuatica());
		amoto.setNumeroOficial(numeroOficial);
		amoto.setColor(color);
		amoto.setMarcaChasis(marcaChasis);
		amoto.setModeloChasis(modeloChasis);
		amoto.setNoSerieChasis(numeroSerieChasis);
		amoto.setUbicacionFisica(ubicacionFisica);
		amoto.setUsuarioAudit(ul.getCodUsuario());
		amoto.setFechaAudit(new Date());
		amoto.setAccionAudit("INSERT de Moto Acuatica");
		
		servicioGenerico.agregar(amoto);
		
		//almacenando Propietarios falta
		for(int i=0;i<=cnt;i++){
			
			String valorPersona = getServletRequest().getParameter("hdVal"+i);
			String valorPor = getServletRequest().getParameter("porcentajeVal"+i);
			if(valorPersona!=null &&!valorPersona.equals("")&&valorPor!=null&&!valorPor.equals("")){			
				PersonaxMoto pxm = new PersonaxMoto();
				AuditPersonaXMoto apxm = new AuditPersonaXMoto();				
				PersonaMotoPk pmpk = new PersonaMotoPk();
				pxm.setPersonaMotoPk(pmpk);
				
				Long idPer = new Long(valorPersona);
				Long porc = new Long (valorPor);
				
				pxm.getPersonaMotoPk().setIdMotoAcuatica(moto.getIdMotoAcuatica());
				pxm.getPersonaMotoPk().setIdPersona(idPer);
				pxm.setPorcentaje(porc);
				pxm.setFechaInicio(new Date());
				pxm.setUsuario(ul.getCodUsuario());
												
				servicioGenerico.agregar(pxm);
				
				apxm.setIdPersona(idPer);
				apxm.setIdMotoAcuatica(moto.getIdMotoAcuatica());
				apxm.setFechaInicio(new Date());
				apxm.setPorcentaje(porc);
				apxm.setUsuarioAudit(ul.getCodUsuario());
				apxm.setAccionAudit("INSERT de personas por moto");
				apxm.setFechaAudit(new Date());
				
				servicioGenerico.agregar(apxm);
			
			}
		}
		
		
				
		JSONObject o = new JSONObject();
		o.put("idMoto",moto.getIdMotoAcuatica());
		//o.put("exito", 1);
		enviarJsonNavegador(o);		
		} catch (Exception e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}
}
	
	@SuppressWarnings("deprecation")
	public void modificar(){
			
		
		MotoAcuatica moto = new MotoAcuatica();
		MotorMoto motor = new MotorMoto();
		AuditMotoAcuatica amoto = new AuditMotoAcuatica();
		String vmotor= null;
		
		
  	  	//datos Generales
		String idMotoAcuatica = getServletRequest().getParameter("idMoto");
	  	String numeroOficial = getServletRequest().getParameter("numeroOficialMoto");
	  	String color = getServletRequest().getParameter("colorMoto");
		String marcaChasis = getServletRequest().getParameter("marcaChasisMoto");
		String modeloChasis = getServletRequest().getParameter("modeloChasisMoto");
		String numeroSerieChasis = getServletRequest().getParameter("numeroSerieChasisMoto");
		String ubicacionFisica = getServletRequest().getParameter("ubicacionFisicaMoto");
	
		
		//Datos Motor  	    	
		String idMotor = getServletRequest().getParameter("idMotor");
  	    String noSerie = getServletRequest().getParameter("noSerieMotor");		
		String marcaMotorMoto = getServletRequest().getParameter("marcaMotorMoto");
		String modeloMotorMoto = getServletRequest().getParameter("modeloMotorMoto");
		String magnitudPotencia = getServletRequest().getParameter("magnitudPotenciaMotor");
		String idUnidadPotencia = getServletRequest().getParameter("idUnidadPotencia");
	
		
		//Datos Resolucion	  	 	
		String estado = getServletRequest().getParameter("estado");
		String fechaResolucionDE = getServletRequest().getParameter("fechaResolucionDEMoto");
		String fechaNotificacion = getServletRequest().getParameter("fechaNotificacionMoto");
		String fechaEmision = getServletRequest().getParameter("fechaEmisionMoto");
		String fechaExpiracion = getServletRequest().getParameter("fechaExpiracionMoto");
		String resolucionDE = getServletRequest().getParameter("resolucionDEMoto");
		
		
		String contador = getServletRequest().getParameter("contador");
		String idMoto = getServletRequest().getParameter("idMoto");
		String finalRes = getServletRequest().getParameter("final");
	    vmotor = getServletRequest().getParameter("vmotor");
		
		//id_motor,fechaResolucionDE,fechaNotificacion,fechaEmision,fechaExpiracion,magnitudPotencia,idUnidadPotencia
				
		if(idMotor!=null&&!idMotor.equals("")) motor.setIdMotor(new Long(idMotor));
		Float magnitudPotenciav = new Float(0);
		if(magnitudPotencia!=null&&!magnitudPotencia.equals("")) magnitudPotenciav = new Float(magnitudPotencia);
		UnidadPotencia unidadPotencia = new UnidadPotencia();
		if(idUnidadPotencia!=null&&!idUnidadPotencia.equals("")) unidadPotencia.setIdUnidadPotencia(new Long(idUnidadPotencia));
		
		
		//Date fechaResolucionDEv = new Date(0);
		//if(fechaResolucionDE!=null&&!fechaResolucionDE.equals("")) fechaResolucionDEv = new Date(fechaResolucionDE);
		//Date fechaNotificacionv = new Date(0);
		//if(fechaNotificacion!=null&&!fechaNotificacion.equals("")) fechaNotificacionv = new Date(fechaNotificacion);
		//Date fechaEmisionv = new Date(0);
		//if(fechaEmision!=null&&!fechaEmision.equals("")) fechaEmisionv = new Date(fechaEmision);
		//Date fechaExpiracionv = new Date(0);
		//if(fechaExpiracion!=null&&!fechaExpiracion.equals("")) fechaExpiracionv = new Date(fechaExpiracion);
				
		Long cnt = new Long(0);
		if(contador!=null&&!contador.equals("")) cnt = new Long(contador);

		
		
		
		try{
			
			//consultando datos de la moto acuatica
			
			List<MotoAcuatica> listaMoto = new ArrayList<MotoAcuatica>();	
			HashMap<String, Object> parametros = new HashMap<String, Object>();
			ArrayList<String> propiedades=new ArrayList<String>();
			ArrayList<Object> valores = new ArrayList<Object>();
			ArrayList<String> tiposConsulta = new ArrayList<String>();
			
			propiedades.add("idMotoAcuatica");
			valores.add(new Long(idMoto));
			tiposConsulta.add(Consulta.IGUAL);
		
		
			
			parametros.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros.put("ordenarPor", "idMotoAcuatica asc");
			
			listaMoto=servicioGenerico.cargarTodosV2(MotoAcuatica.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
						
			moto= listaMoto.get(0);
			
			
			//consultando datos del motor de la moto acuatica
			
			/*
			List<MotorMoto> listaMotorMoto = new ArrayList<MotorMoto>();	
			HashMap<String, Object> parametros2 = new HashMap<String, Object>();
			ArrayList<String> propiedades2=new ArrayList<String>();
			ArrayList<Object> valores2 = new ArrayList<Object>();
			ArrayList<String> tiposConsulta2 = new ArrayList<String>();
			
			propiedades2.add("idMotor");
			valores2.add(new Long(moto.getIdMotor().getIdMotor()));
			tiposConsulta2.add(Consulta.IGUAL);
			
		
			
			parametros2.put("propiedades", Listas.pasarListaArregloString(propiedades));
			parametros2.put("valores", Listas.pasarListaArregloObjeto(valores));
			parametros2.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta));
			parametros2.put("ordenarPor", "idMotor asc");
			
			listaMotorMoto=servicioGenerico.cargarTodosV2(MotorMoto.class, parametros, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
						
			motor= listaMotorMoto.get(0);
			 */
			
			//datos Generales
			moto.setNumeroOficial(numeroOficial);
			moto.setColor(color);
			moto.setMarcaChasis(marcaChasis);
			moto.setModeloChasis(modeloChasis);
			moto.setNoSerieChasis(numeroSerieChasis);
			moto.setUbicacionFisica(ubicacionFisica);
			
			
			//Datos Motor
			//motor.setIdMotor(new Long(idMotor));
			
			//motor.setNoSerie(noSerie);
			//motor.setMarcaMotorMoto(marcaMotorMoto);
			//motor.setModeloMotorMoto(modeloMotorMoto);
			//motor.setMagnitudPotencia(magnitudPotenciav);
			//motor.setIdUnidadPotencia(unidadPotencia.getIdUnidadPotencia());
			if(moto.getIdMotor()!= null  && vmotor != null){
				motor.setIdMotor(moto.getIdMotor().getIdMotor());							
				motor.setNoSerie(noSerie);
				motor.setMarcaMotorMoto(marcaMotorMoto);
				motor.setModeloMotorMoto(modeloMotorMoto);
				motor.setMagnitudPotencia(magnitudPotenciav);
				motor.setIdUnidadPotencia(unidadPotencia.getIdUnidadPotencia());
				servicioGenerico.modificar(motor);	
			}else if(moto.getIdMotor()== null && vmotor != null){
				motor.setNoSerie(noSerie);
				motor.setMarcaMotorMoto(marcaMotorMoto);
				motor.setModeloMotorMoto(modeloMotorMoto);
				motor.setMagnitudPotencia(magnitudPotenciav);
				motor.setIdUnidadPotencia(unidadPotencia.getIdUnidadPotencia());
				servicioGenerico.agregar(motor);
				moto.setIdMotor(motor);
				
			}
			
			
			//Datos resolucion
			moto.setEstado(estado);
			moto.setFechaResolucionDE(Fecha.traducirValorFechaNull(fechaResolucionDE));
			moto.setFechaNotificacion(Fecha.traducirValorFechaNull(fechaNotificacion));
			moto.setFechaEmision(Fecha.traducirValorFechaNull(fechaEmision));
			moto.setFechaExpiracion(Fecha.traducirValorFechaNull(fechaExpiracion));
			moto.setResolucionDE(resolucionDE);
			
			UsuarioLogueado ul = obtenerUsuarioLogueado(getServletRequest());
			moto.setUsuario(ul.getCodUsuario());
			
			
			servicioGenerico.modificar(moto);
			
			
			amoto.setIdMotoAcuatica(moto.getIdMotoAcuatica());
			amoto.setNumeroOficial(numeroOficial);
			amoto.setUbicacionFisica(ubicacionFisica);
			amoto.setColor(color);
			amoto.setFotografia(moto.getFotografia());
			
			if(moto.getIdMotor()!= null){
				amoto.setIdMotor(moto.getIdMotor().getIdMotor());	
			}
			
			amoto.setMarcaChasis(marcaChasis);
			amoto.setModeloChasis(modeloChasis);
			amoto.setNoSerieChasis(numeroSerieChasis);
			
			amoto.setResolucionDe(resolucionDE);
			amoto.setFechaResolucionDe(Fecha.traducirValorFechaNull(fechaResolucionDE));
			amoto.setFechaNotificacion(Fecha.traducirValorFechaNull(fechaNotificacion));
			amoto.setFechaEmision(Fecha.traducirValorFechaNull(fechaEmision));
			amoto.setFechaExpiracion(Fecha.traducirValorFechaNull(fechaExpiracion));
			amoto.setFechaAudit(new Date());
			amoto.setUsuarioAudit(ul.getCodUsuario());
			amoto.setAccionAudit("UPDATE de moto");
			
			servicioGenerico.agregar(amoto);
			
			
			
			for(int i=0;i<=cnt;i++){
				String valorPersona = getServletRequest().getParameter("hdVal"+i);
				String valorPor = getServletRequest().getParameter("porcentajeVal"+i);
				if(valorPersona!=null &&!valorPersona.equals("")&&valorPor!=null&&!valorPor.equals("")){
					PersonaxMoto pxm = new PersonaxMoto();					
					Long idPer = new Long(valorPersona);
					Long porc = new Long(valorPor);
					List<PersonaxMoto> listaPerMoto=null;
					
					
					
					HashMap<String, Object> parametros3 = new HashMap<String, Object>();
					ArrayList<String> propiedades3=new ArrayList<String>();
					ArrayList<Object> valores3 = new ArrayList<Object>();
					ArrayList<String> tiposConsulta3 = new ArrayList<String>();
					
					propiedades3.add("personaMotoPk.idMotoAcuatica");					
					valores3.add(new Long(moto.getIdMotoAcuatica()));
					tiposConsulta3.add(Consulta.IGUAL);
					
					propiedades3.add("personaMotoPk.idPersona");
					valores3.add(new Long(idPer));
					tiposConsulta3.add(Consulta.IGUAL);
					
					parametros3.put("propiedades", Listas.pasarListaArregloString(propiedades3));
					parametros3.put("valores", Listas.pasarListaArregloObjeto(valores3));
					parametros3.put("tiposConsulta", Listas.pasarListaArregloString(tiposConsulta3));
					parametros3.put("ordenarPor", "personaMotoPk.idPersona asc");
					
					listaPerMoto=servicioGenerico.cargarTodosV2(PersonaxMoto.class, parametros3, Constantes.SIN_LIMITE, Constantes.SIN_LIMITE);
				
					if(!listaPerMoto.isEmpty()){
						AuditPersonaXMoto apxm = new AuditPersonaXMoto();
						pxm = listaPerMoto.get(0);
						pxm.setPorcentaje(porc);
						pxm.setUsuario(ul.getCodUsuario());						
						servicioGenerico.modificar(pxm);
						
						apxm.setIdPersona(idPer);
						apxm.setIdMotoAcuatica(moto.getIdMotoAcuatica());
						apxm.setFechaInicio(new Date());
						apxm.setFechaAudit(new Date());
						apxm.setUsuarioAudit(ul.getCodUsuario());
						apxm.setAccionAudit("UPDATE de personas por moto");
						apxm.setPorcentaje(porc);
						
						servicioGenerico.agregar(apxm);
						
					}else{
						PersonaMotoPk pmpk = new PersonaMotoPk();
						AuditPersonaXMoto apxm = new AuditPersonaXMoto();
						pxm.setPersonaMotoPk(pmpk);
						pxm.getPersonaMotoPk().setIdMotoAcuatica(moto.getIdMotoAcuatica());												
						pxm.getPersonaMotoPk().setIdPersona(idPer);						
						pxm.setPorcentaje(porc);	
						pxm.setFechaInicio(new Date());
						pxm.setUsuario(ul.getCodUsuario());						
						servicioGenerico.agregar(pxm);	
						
						apxm.setIdPersona(idPer);
						apxm.setIdMotoAcuatica(moto.getIdMotoAcuatica());
						apxm.setFechaInicio(new Date());
						apxm.setFechaAudit(new Date());
						apxm.setUsuarioAudit(ul.getCodUsuario());
						apxm.setAccionAudit("INSERT de personas por moto");
						apxm.setPorcentaje(porc);
						
						servicioGenerico.agregar(apxm);
						
						
					}
					
				}
			}
			
			JSONObject o = new JSONObject();
			o.put("idMoto",moto.getIdMotoAcuatica());
			if(finalRes!=null&&finalRes.equals("1")){
				o.put("exito", 1);
				o.put("mensaje", "Se Guardaron los Datos Exitosamente");
			}
			
			enviarJsonNavegador(o);
			
		}catch(Exception e){
			e.printStackTrace();
			enviarMensajeStatic("error~"+e.getCause().toString(), getServletResponse());
		}					
	}	
}